const moment = require("moment");
const https = require("https");

module.exports = {
    /** 获取当前时间 */
    GetNowDate,

    /** 获取api返回的结果 */
    GetApiResult,

    /** 将消息在第一个空格处切割,返回后面的内容 */
    GetSplitMsg,

    /** 向每个管理员发送消息 */
    SendToAdmins,

    /** 判断元素是不是数组 */
    isArray,

    /** 判断元素是不是字典 */
    isDictionary
}

/** 获取当前日期 */
function GetNowDate(){
    return moment().utcOffset(8);
}

/** 获取API返回的内容 */
async function GetApiResult(api) {
    return new Promise((resolve) => {
        https.get(api, (res)=>{
            let ret = "";
            res.on('data', (data)=>{
                ret += data;
            });
            res.on('end', ()=>{
                try{
                    let json = JSON.parse(ret);
                    resolve(json);
                }catch (e){
                    resolve(undefined);
                }
            });
            res.on('error', (err)=>{
                resolve(undefined);
            })
        });
    });
}

/** 获取按第一个空格切割后的字符串,如果错误则返回 undefined */
function GetSplitMsg(str){
    str = str.trim();
    for(let i in str){

    }
    let index = str.indexOf(' ');
    if(index === -1){
        return undefined;
    }
    while (index !== str.length - 1 && str[index + 1] === ' '){
        ++index;
    }
    return str.slice(index + 1);
}

/** 向所有管理员发送消息 */
async function SendToAdmins(msg){
    for(let i in config.client.admin){
        let friend = Bot.pickFriend(config.client.admin[i]);
        await friend.sendMsg(msg);
    }
}

/** 是否为字典 */
function isDictionary(dic){
    return typeof(dic) == "object"
        && Object.prototype.toString.call(dic).toLowerCase() === "[object object]"
        && !dic.length;
}

/** 是否为数组 */
function isArray(arr){
    return Object.prototype.toString.call(arr).toLowerCase() === '[object array]';
}
